Full source code giải đố hình đơn giản
16.641 lượt xem;
- PuzzleGameSaver.cs
- Puzzle Game Saver /
- Scripts /
- Assets /
- project /
1 using UnityEngine;
2 using System.Collections;
3 using System;
4 using System.IO;
5 using System.Runtime.Serialization.Formatters.Binary;
6
7 public class PuzzleGameSaver : MonoBehaviour
8 {
9
10 private GameData gameData;
11
12 public bool[] candyPuzzleLevels;
13 public bool[] transportPuzzleLevels;
14 public bool[] shapePuzzleLevels;
15
16 public int[] candyPuzzleLevelStars;
17 public int[] transportPuzzleLevelStars;
18 public int[] shapePuzzleLevelStars;
19
20 private bool isGameStartedForTheFirstTime;
21
22 public float musicVolume;
23
24 void Awake()
25 {
26 InitializeGame();
27 }
28
29 void InitializeGame()
30 {
31
32 LoadGameData();
33
34 if (gameData != null)
35 {
36 isGameStartedForTheFirstTime = gameData.GetIsGameStartedForTheFirstTime();
37 }
38 else
39 {
40 isGameStartedForTheFirstTime = true;
41 }
42
43 if (isGameStartedForTheFirstTime)
44 {
45
46 isGameStartedForTheFirstTime = false;
47
48 musicVolume = 0;
49
50 candyPuzzleLevels = new bool[5];
51 transportPuzzleLevels = new bool[5];
52 shapePuzzleLevels = new bool[5];
53
54 candyPuzzleLevels[0] = true;
55 transportPuzzleLevels[0] = true;
56 shapePuzzleLevels[0] = true;
57
58 for (int i = 1; i < candyPuzzleLevels.Length; i++)
59 {
60 candyPuzzleLevels[i] = false;
61 transportPuzzleLevels[i] = false;
62 shapePuzzleLevels[i] = false;
63 }
64
65 candyPuzzleLevelStars = new int[5];
66 transportPuzzleLevelStars = new int[5];
67 shapePuzzleLevelStars = new int[5];
68
69 for (int i = 0; i < candyPuzzleLevelStars.Length; i++)
70 {
71 candyPuzzleLevelStars[i] = 0;
72 transportPuzzleLevelStars[i] = 0;
73 shapePuzzleLevelStars[i] = 0;
74 }
75
76 gameData = new GameData();
77
78 gameData.SetCandyPuzzleLevels(candyPuzzleLevels);
79 gameData.SetTransportPuzzleLevels(transportPuzzleLevels);
80 gameData.SetShapePuzzleLevels(shapePuzzleLevels);
81
82 gameData.SetCandyPuzzleLevelStars(candyPuzzleLevelStars);
83 gameData.SetTransportPuzzleLevelStars(transportPuzzleLevelStars);
84 gameData.SetShapePuzzleLevelStars(shapePuzzleLevelStars);
85
86 gameData.SetIsGameStartedForTheFirstTime(isGameStartedForTheFirstTime);
87 gameData.SetMusicVolume(musicVolume);
88
89 SaveGameData();
90 LoadGameData();
91
92
93 }
94
95 }
96
97 public void SaveGameData()
98 {
99 FileStream file = null;
100
101 try
102 {
103
104 BinaryFormatter bf = new BinaryFormatter();
105
106 file = File.Create(Application.persistentDataPath + "/GameData.dat");
107
108 if (gameData != null)
109 {
110
111 gameData.SetCandyPuzzleLevels(candyPuzzleLevels);
112 gameData.SetTransportPuzzleLevels(transportPuzzleLevels);
113 gameData.SetShapePuzzleLevels(shapePuzzleLevels);
114
115 gameData.SetCandyPuzzleLevelStars(candyPuzzleLevelStars);
116 gameData.SetTransportPuzzleLevelStars(transportPuzzleLevelStars);
117 gameData.SetShapePuzzleLevelStars(shapePuzzleLevelStars);
118
119 gameData.SetIsGameStartedForTheFirstTime(isGameStartedForTheFirstTime);
120 gameData.SetMusicVolume(musicVolume);
121
122 bf.Serialize(file, gameData);
123
124 }
125
126 }
127 catch (Exception e)
128 {
129
130 }
131 finally
132 {
133 if (file != null)
134 {
135 file.Close();
136 }
137 }
138 }
139
140 void LoadGameData()
141 {
142 FileStream file = null;
143
144 try
145 {
146
147 BinaryFormatter bf = new BinaryFormatter();
148
149 file = File.Open(Application.persistentDataPath + "/GameData.dat", FileMode.Open);
150
151 gameData = (GameData)bf.Deserialize(file);
152
153 if (gameData != null)
154 {
155
156 candyPuzzleLevels = gameData.GetCandyPuzzleLevels();
157 transportPuzzleLevels = gameData.GetTransportPuzzleLevels();
158 shapePuzzleLevels = gameData.GetShapePuzzleLevels();
159
160 candyPuzzleLevelStars = gameData.GetCandyPuzzleLevelStars();
161 transportPuzzleLevelStars = gameData.GetTransportPuzzleLevelStars();
162 shapePuzzleLevelStars = gameData.GetShapePuzzleLevelStars();
163
164 musicVolume = gameData.GetMusicVolume();
165
166
167 }
168
169 }
170 catch (Exception e)
171 {
172
173 }
174 finally
175 {
176 if (file != null)
177 {
178 file.Close();
179 }
180 }
181
182 }
183
184 public void Save(int level, string selectedPuzzle, int stars)
185 {
186
187 int unlockNextLevel = -1;
188
189 switch (selectedPuzzle)
190 {
191
192 case "Candy Puzzle":
193
194 unlockNextLevel = level + 1;
195
196 candyPuzzleLevelStars[level] = stars;
197
198 if (unlockNextLevel < candyPuzzleLevels.Length)
199 {
200 candyPuzzleLevels[unlockNextLevel] = true;
201 }
202
203 break;
204
205 case "Transport Puzzle":
206
207 unlockNextLevel = level + 1;
208
209 transportPuzzleLevelStars[level] = stars;
210
211 if (unlockNextLevel < transportPuzzleLevels.Length)
212 {
213 transportPuzzleLevels[unlockNextLevel] = true;
214 }
215
216 break;
217
218 case "Shape Puzzle":
219
220 unlockNextLevel = level + 1;
221 shapePuzzleLevelStars[level] = stars;
222
223 if (unlockNextLevel < shapePuzzleLevels.Length)
224 {
225 shapePuzzleLevels[unlockNextLevel] = true;
226 }
227
228 break;
229
230
231 }
232
233 }
234
235
236
237
238 } // PuzzleGameSaver
2 using System.Collections;
3 using System;
4 using System.IO;
5 using System.Runtime.Serialization.Formatters.Binary;
6
7 public class PuzzleGameSaver : MonoBehaviour
8 {
9
10 private GameData gameData;
11
12 public bool[] candyPuzzleLevels;
13 public bool[] transportPuzzleLevels;
14 public bool[] shapePuzzleLevels;
15
16 public int[] candyPuzzleLevelStars;
17 public int[] transportPuzzleLevelStars;
18 public int[] shapePuzzleLevelStars;
19
20 private bool isGameStartedForTheFirstTime;
21
22 public float musicVolume;
23
24 void Awake()
25 {
26 InitializeGame();
27 }
28
29 void InitializeGame()
30 {
31
32 LoadGameData();
33
34 if (gameData != null)
35 {
36 isGameStartedForTheFirstTime = gameData.GetIsGameStartedForTheFirstTime();
37 }
38 else
39 {
40 isGameStartedForTheFirstTime = true;
41 }
42
43 if (isGameStartedForTheFirstTime)
44 {
45
46 isGameStartedForTheFirstTime = false;
47
48 musicVolume = 0;
49
50 candyPuzzleLevels = new bool[5];
51 transportPuzzleLevels = new bool[5];
52 shapePuzzleLevels = new bool[5];
53
54 candyPuzzleLevels[0] = true;
55 transportPuzzleLevels[0] = true;
56 shapePuzzleLevels[0] = true;
57
58 for (int i = 1; i < candyPuzzleLevels.Length; i++)
59 {
60 candyPuzzleLevels[i] = false;
61 transportPuzzleLevels[i] = false;
62 shapePuzzleLevels[i] = false;
63 }
64
65 candyPuzzleLevelStars = new int[5];
66 transportPuzzleLevelStars = new int[5];
67 shapePuzzleLevelStars = new int[5];
68
69 for (int i = 0; i < candyPuzzleLevelStars.Length; i++)
70 {
71 candyPuzzleLevelStars[i] = 0;
72 transportPuzzleLevelStars[i] = 0;
73 shapePuzzleLevelStars[i] = 0;
74 }
75
76 gameData = new GameData();
77
78 gameData.SetCandyPuzzleLevels(candyPuzzleLevels);
79 gameData.SetTransportPuzzleLevels(transportPuzzleLevels);
80 gameData.SetShapePuzzleLevels(shapePuzzleLevels);
81
82 gameData.SetCandyPuzzleLevelStars(candyPuzzleLevelStars);
83 gameData.SetTransportPuzzleLevelStars(transportPuzzleLevelStars);
84 gameData.SetShapePuzzleLevelStars(shapePuzzleLevelStars);
85
86 gameData.SetIsGameStartedForTheFirstTime(isGameStartedForTheFirstTime);
87 gameData.SetMusicVolume(musicVolume);
88
89 SaveGameData();
90 LoadGameData();
91
92
93 }
94
95 }
96
97 public void SaveGameData()
98 {
99 FileStream file = null;
100
101 try
102 {
103
104 BinaryFormatter bf = new BinaryFormatter();
105
106 file = File.Create(Application.persistentDataPath + "/GameData.dat");
107
108 if (gameData != null)
109 {
110
111 gameData.SetCandyPuzzleLevels(candyPuzzleLevels);
112 gameData.SetTransportPuzzleLevels(transportPuzzleLevels);
113 gameData.SetShapePuzzleLevels(shapePuzzleLevels);
114
115 gameData.SetCandyPuzzleLevelStars(candyPuzzleLevelStars);
116 gameData.SetTransportPuzzleLevelStars(transportPuzzleLevelStars);
117 gameData.SetShapePuzzleLevelStars(shapePuzzleLevelStars);
118
119 gameData.SetIsGameStartedForTheFirstTime(isGameStartedForTheFirstTime);
120 gameData.SetMusicVolume(musicVolume);
121
122 bf.Serialize(file, gameData);
123
124 }
125
126 }
127 catch (Exception e)
128 {
129
130 }
131 finally
132 {
133 if (file != null)
134 {
135 file.Close();
136 }
137 }
138 }
139
140 void LoadGameData()
141 {
142 FileStream file = null;
143
144 try
145 {
146
147 BinaryFormatter bf = new BinaryFormatter();
148
149 file = File.Open(Application.persistentDataPath + "/GameData.dat", FileMode.Open);
150
151 gameData = (GameData)bf.Deserialize(file);
152
153 if (gameData != null)
154 {
155
156 candyPuzzleLevels = gameData.GetCandyPuzzleLevels();
157 transportPuzzleLevels = gameData.GetTransportPuzzleLevels();
158 shapePuzzleLevels = gameData.GetShapePuzzleLevels();
159
160 candyPuzzleLevelStars = gameData.GetCandyPuzzleLevelStars();
161 transportPuzzleLevelStars = gameData.GetTransportPuzzleLevelStars();
162 shapePuzzleLevelStars = gameData.GetShapePuzzleLevelStars();
163
164 musicVolume = gameData.GetMusicVolume();
165
166
167 }
168
169 }
170 catch (Exception e)
171 {
172
173 }
174 finally
175 {
176 if (file != null)
177 {
178 file.Close();
179 }
180 }
181
182 }
183
184 public void Save(int level, string selectedPuzzle, int stars)
185 {
186
187 int unlockNextLevel = -1;
188
189 switch (selectedPuzzle)
190 {
191
192 case "Candy Puzzle":
193
194 unlockNextLevel = level + 1;
195
196 candyPuzzleLevelStars[level] = stars;
197
198 if (unlockNextLevel < candyPuzzleLevels.Length)
199 {
200 candyPuzzleLevels[unlockNextLevel] = true;
201 }
202
203 break;
204
205 case "Transport Puzzle":
206
207 unlockNextLevel = level + 1;
208
209 transportPuzzleLevelStars[level] = stars;
210
211 if (unlockNextLevel < transportPuzzleLevels.Length)
212 {
213 transportPuzzleLevels[unlockNextLevel] = true;
214 }
215
216 break;
217
218 case "Shape Puzzle":
219
220 unlockNextLevel = level + 1;
221 shapePuzzleLevelStars[level] = stars;
222
223 if (unlockNextLevel < shapePuzzleLevels.Length)
224 {
225 shapePuzzleLevels[unlockNextLevel] = true;
226 }
227
228 break;
229
230
231 }
232
233 }
234
235
236
237
238 } // PuzzleGameSaver